home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 2 / DOS037.dsk / ALGEBRA 1.bas next >
BASIC Source File  |  2012-02-16  |  8KB  |  246 lines

  1. 1  REM ***********************
  2. 2  REM **     ALGEBRA 1     **
  3. 3  REM **        BY         **
  4. 4  REM **   TOM  JACOBSEN   **
  5. 5  REM **   GREEN  APPLES   **
  6. 6  REM **NORTH CENTRAL  IOWA**
  7. 7  REM ***********************
  8. 20 F1 = 0:F2 = 0:F3 = 0:F4 = 0
  9. 30 MY = 2:MX = 3:B = 24:S = 100:MG = 2/3
  10. 31 S$ = "+ "
  11. 40  GOTO 5000
  12. 2000  REM  INPUT TWO SETS OF COORDINATES
  13. 2010  HOME : PRINT "THIS PORTION OF THE PROGRAM GENERATES   A STRAIGHT LINE EQUATION FROM TWO SETS": PRINT "OF COORDINATES SUPPLYED BY YOU."
  14. 2020  PRINT : PRINT "FIRST COORDINATES    (X1,Y1)"
  15. 2030  INPUT "    ENTER X1  ";X1
  16. 2035  VTAB 6: HTAB 21
  17. 2040  INPUT "    ENTER Y1  ";Y1
  18. 2045  PRINT  TAB( 15);"(";X1;",";Y1;")"
  19. 2046  VTAB 8
  20. 2050  PRINT "SECOND COORDINATES    (X2,Y2)"
  21. 2060  INPUT "    ENTER X2  ";X2
  22. 2065  VTAB 9: HTAB 21
  23. 2070  INPUT "    ENTER Y2  ";Y2
  24. 2075  IF X1 = X2  AND Y1 = Y2  THEN 2046
  25. 2080  PRINT  TAB( 15);"(";X2;",";Y2;")"
  26. 2085  FOR A = 1 TO 1000
  27. 2090 D = A
  28. 2095  NEXT A
  29. 2096  GOSUB 2200
  30. 2100  RETURN 
  31. 2200  REM  DEVELOPE EQUATION FROM COORDINATES
  32. 2210  HOME : PRINT "(";X1;",";Y1;")"; TAB( 28);"(";X2;",";Y2;")":F3 = 0:F4 = 0
  33. 2211  IF X1 < >X2  THEN 2220
  34. 2212  PRINT : PRINT "THESE COORDINATES CAN NOT BE DEFINED BY Y = M X + B.  THE EQUATION FOR THIS LINE IS:"
  35. 2213  PRINT : PRINT "          X = ";X1
  36. 2214  REM  F3 IS INFINATE SLOPE FLAG
  37. 2215 F3 = 1
  38. 2216  GOTO 2380
  39. 2220  PRINT  TAB( 15);"Y = M X + B"
  40. 2230  PRINT "M = SLOPE = (Y2-Y1) / (X2-X1)"
  41. 2235 MY = Y2 -Y1:MX = X2 -X1
  42. 2240  PRINT "M = ";MY;"/";MX
  43. 2245 F1 = 0:F2 = 0
  44. 2250  REM  F1 IS CHANGE IN MY OR MX FLAG
  45. 2255  REM  F2 IS WHOLE NUMBER FLAG
  46. 2260  REM  FIND LOWEST COMON DENOMINATOR
  47. 2265  GOSUB 2400
  48. 2270  IF F1 = 0  THEN 2300
  49. 2275  IF F2 = 0  THEN 2290
  50. 2280  VTAB 4: HTAB 15
  51. 2285  PRINT " = ";MY/MX: GOTO 2300
  52. 2290  VTAB 4: HTAB 15
  53. 2295  PRINT " = ";MY;"/";MX
  54. 2300  PRINT "B = Y INTERCEPT"
  55. 2310  PRINT "SUBSTITUTE TO SOLVE FOR B"
  56. 2320  PRINT "B = Y - M X  =  Y1 - M X1"
  57. 2325 MG = MY/MX
  58. 2330 B = Y1 -MG *X1
  59. 2340  PRINT "B = ";B
  60. 2350  PRINT : PRINT "EQUATION FOR COORDINATES GIVEN"
  61. 2355 S$ = "+ ": IF B <0  THEN S$ = ""
  62. 2356  IF F2 = 0  THEN 2370
  63. 2360  PRINT : PRINT  TAB( 10);"Y = ";MY/MX;" X ";S$;" ";B
  64. 2365  GOTO 2380
  65. 2370  PRINT : PRINT  TAB( 10);"Y = ";MY;"/";MX;" X ";S$;" ";B
  66. 2380  PRINT : PRINT "PRESS ANY KEY TO CONTINUE"
  67. 2385  GET R$
  68. 2390  RETURN 
  69. 2400  REM  FIND LOWEST COMON DENOMINATOR
  70. 2401  REM  NUMBER OF PRIMES ARE LIMITED TO SAVE TIME.
  71. 2402  REM  THEREFORE LOWEST COMON DENOMINATOR MAY NOT ALLWAYS BE FOUND
  72. 2405  IF MX <0  AND MY <0  THEN F1 = 1
  73. 2410  IF MY/MX > = 0  THEN 2430
  74. 2420 MY =  ABS(MY) *( -1):MX =  ABS(MX)
  75. 2425  GOTO 2435
  76. 2430 MY =  ABS(MY):MX =  ABS(MX)
  77. 2435  IF MY/MX < > INT(MY/MX)  THEN 2450
  78. 2440 F2 = 1:F1 = 1
  79. 2445  RETURN 
  80. 2450  RESTORE 
  81. 2455  DATA  2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83
  82. 2456  DATA  89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167
  83. 2457  DATA  173,179,181,191,193,197,199
  84. 2460  READ A: IF A > = 199  THEN 2510
  85. 2465  IF A >MY  OR A >MX  THEN 2510
  86. 2470  IF MY/A < > INT(MY/A)  OR MX/A < > INT(MX/A)  THEN 2460
  87. 2475 MY = MY/A:MX = MX/A:F1 = 1
  88. 2480  GOTO 2465
  89. 2510  RETURN 
  90. 2600  REM  INPUT EQUATION
  91. 2610 F1 = 0:F2 = 0:F3 = 0:F4 = 0
  92. 2620  HOME : PRINT "THIS PORTION OF THE PROGRAM ALLOWS YOU  TO ENTER THE EQUATION OF A STRAIGHT LINE"
  93. 2630  PRINT "IS THE LINE PARALEL TO THE Y AXIS?"
  94. 2640  INPUT R$
  95. 2650  IF  LEFT$(R$,1) < >"Y"  THEN 2700
  96. 2660 F3 = 1
  97. 2665  PRINT : PRINT "INPUT X INTERCEPT   ";
  98. 2670  INPUT X1
  99. 2680  PRINT : PRINT "EQUATION    X = ";X1
  100. 2685  PRINT : PRINT "PUSH ANY KEY TO CONTINUE   ";
  101. 2690  GET R$
  102. 2695  RETURN 
  103. 2700  PRINT : PRINT "EQUATION FORMAT IS  Y = M X + B"
  104. 2710  PRINT "M = SLOPE = CHANGE IN Y / CHANGE IN X"
  105. 2720  PRINT "HOW DO YOU WANT TO ENTER M?"
  106. 2725  PRINT "     1  DECIMAL": PRINT "     2  FRACTION"
  107. 2730  INPUT F4
  108. 2735  IF F4 = 1  THEN 2750
  109. 2740  IF F4 = 2  THEN 2760
  110. 2745  HOME : GOTO 2720
  111. 2750  INPUT "ENTER M    ";MY
  112. 2755  GOTO 2770
  113. 2760  INPUT "CHANGE IN Y    ";MY
  114. 2765  INPUT "CHANGE IN X    ";MX
  115. 2767 F1 = 0:F2 = 0: GOSUB 2400
  116. 2770  PRINT : PRINT "B = Y INTERCEPT"
  117. 2780  INPUT "ENTER B    ";B
  118. 2785 S$ = "+ ": IF B <0  THEN S$ = ""
  119. 2790  PRINT : PRINT "EQUATION    Y = ";
  120. 2795  IF F4 < >1  THEN 2810
  121. 2800  PRINT MY;" X ";S$;B
  122. 2805  GOTO 2850
  123. 2810  IF F2 = 1  THEN 2840
  124. 2820  PRINT MY;"/";MX;" X ";S$;B
  125. 2830  GOTO 2850
  126. 2840  PRINT MY/MX;" X ";S$;B
  127. 2850  PRINT : PRINT "PRESS ANY KEY TO CONTINUE"
  128. 2855  GET R$
  129. 2860  RETURN 
  130. 2900  REM  DRAW GRAPH
  131. 2910  HGR 
  132. 2915  HCOLOR= 3
  133. 2920  HPLOT 150,0 TO 150,140
  134. 2925  HPLOT 80,70 TO 220,70
  135. 2930  FOR A = 0 TO 140  STEP 7
  136. 2940  HPLOT 148,A TO 152,A
  137. 2950  HPLOT 80 +A,68 TO 80 +A,72
  138. 2955  NEXT 
  139. 2960  HPLOT 127,7 TO 131,7: HPLOT 129,5 TO 129,9
  140. 2965  HPLOT 133,4 TO 136,7 TO 139,4: HPLOT 136,7 TO 136,10
  141. 2970  HPLOT 232,70 TO 236,70: HPLOT 234,68 TO 234,72
  142. 2975  HPLOT 238,67 TO 244,73: HPLOT 238,73 TO 244,67
  143. 3000  REM  DESIDE MAGNITUDE OF GRAPH
  144. 3010 BG =  ABS(B):S = 10
  145. 3015  IF F3 = 1  THEN BG =  ABS(X1)
  146. 3020  IF BG <10  THEN 3045
  147. 3030 BG = BG/10
  148. 3035 S = S *10
  149. 3040  GOTO 3020
  150. 3045  HOME : VTAB 21
  151. 3050  PRINT "EACH DIVISION = ";S/10;" UNITS."
  152. 3060  REM  PRINT EQUATION AND SET UP FOR POLTTING LINE
  153. 3065  IF F3 < >1  THEN 3080
  154. 3070  PRINT "EQUATION            X = ";X1
  155. 3075  GOTO 3150
  156. 3080  IF F4 < >1  THEN 3100
  157. 3085 MG = MY
  158. 3090  PRINT "EQUATION   Y = ";MY;" X ";S$;B
  159. 3095  GOTO 3150
  160. 3100  IF F2 < >1  THEN 3120
  161. 3105 MG = MY/MX
  162. 3110  PRINT "EQUATION   Y = ";MY/MX;" X ";S$;B
  163. 3115  GOTO 3150
  164. 3120 MG = MY/MX
  165. 3125  PRINT "EQUATION   Y = ";MY;"/";MX;" X ";S$;B
  166. 3150  REM  PLOT LINE
  167. 3155  IF F3 < >1  THEN 3170
  168. 3157 F5 = 0
  169. 3160 XG = X1:YG = S: GOSUB 4000
  170. 3162 XG = X1:YG = ( -1) *S: GOSUB 4000
  171. 3165  GOTO 3250
  172. 3170 F5 = 0
  173. 3175 XG = ( -1) *S
  174. 3180 YG = MG *XG +B
  175. 3185  IF YG > = ( -1) *S  AND YG < = S  THEN  GOSUB 4000
  176. 3186  IF F5 >0  THEN 3202
  177. 3187 YG = S
  178. 3190 XG = (YG -B)/MG
  179. 3192  IF XG > = ( -1) *S  AND XG < = 0  THEN  GOSUB 4000
  180. 3194  IF F5 >0  THEN 3202
  181. 3196 YG = ( -1) *S
  182. 3198 XG = (YG -B)/MG
  183. 3200  IF XG > = ( -1) *S  AND XG < = 0  THEN  GOSUB 4000
  184. 3202 XG = S
  185. 3204 YG = MG *XG +B
  186. 3206  IF YG > = ( -1) *S  AND YG < = S  THEN  GOSUB 4000
  187. 3208  IF F5 >1  THEN 3224
  188. 3210 YG = S
  189. 3212 XG = (YG -B)/MG
  190. 3214  IF XG > = 0  AND XG < = S  THEN  GOSUB 4000
  191. 3216  IF F5 >1  THEN 3224
  192. 3218 YG = ( -1) *S
  193. 3220 XG = (YG -B)/MG
  194. 3222  IF XG > = 0  AND XG < = S  THEN  GOSUB 4000
  195. 3224  REM  PLOT LINE
  196. 3250  HPLOT X(1),Y(1) TO X(2),Y(2)
  197. 3251  IF F3 = 1  AND X1 >( -1) *S/35  AND X1 <S/35  THEN 3300
  198. 3252  IF MG < -20  AND F3 < >1  THEN 3300
  199. 3253  IF MG >20  AND F3 < >1  THEN 3300
  200. 3254  IF MG <.05  AND MG > -.05  AND B <S/50  AND B >( -1) *S/50  THEN 3300
  201. 3255  PRINT "PRESS ANY KEY TO CONTINUE  ";: GET R$
  202. 3260  HOME : TEXT : RETURN 
  203. 3300  REM  FLASH LINE IF IT LIES ON AXIS
  204. 3310  PRINT "PRESS ANY KEY TO CONTINUE"
  205. 3320  HPLOT X(1),Y(1) TO X(2),Y(2)
  206. 3325  FOR D = 1 TO 100: NEXT 
  207. 3330  HCOLOR= 3
  208. 3340  HPLOT X(1),Y(1) TO X(2),Y(2)
  209. 3345  FOR D = 1 TO 100: NEXT 
  210. 3350 A =  PEEK( -16384)
  211. 3360  POKE  -16368,0
  212. 3370  IF A >127  THEN 3260
  213. 3380  HCOLOR= 0
  214. 3390  GOTO 3320
  215. 4000  REM  CHANGE X Y COORDINATES TO HIGH RES COORDINATES
  216. 4005 X(F5 +1) =  INT((XG/S *70) +.5) +150
  217. 4010 Y(F5 +1) = ( -1) * INT((YG/S *70) +.5) +70
  218. 4020 F5 = F5 +1
  219. 4030  RETURN 
  220. 5000  REM  MENU AND MAIN CONTROL PROGRAM
  221. 5010  HOME : VTAB 10
  222. 5015  PRINT  TAB( 8);"ALGEBRA PROGRAM NUMBER 1"
  223. 5020  PRINT  TAB( 14)"Y = M X + B"
  224. 5025  PRINT : PRINT "   THOMAS JACOBSEN            8-26-79"
  225. 5030  FOR A = 1 TO 2000
  226. 5035 D = A
  227. 5040  NEXT A
  228. 5050  HOME : VTAB 7
  229. 5055  PRINT  TAB( 18);"MENU"
  230. 5060  PRINT : PRINT  TAB( 10);"1  DEMO"
  231. 5065  PRINT  TAB( 10);"2  INPUT COORDINATES"
  232. 5070  PRINT  TAB( 10);"3  INPUT EQUATION"
  233. 5075  PRINT  TAB( 10);"4  PLOT GRAPH"
  234. 5080  PRINT  TAB( 10);"5  STOP"
  235. 5085  PRINT : HTAB 12: INPUT "ENTER NUMBER  ";A
  236. 5090  IF A <1  OR A >5  THEN 5050
  237. 5095  IF A < > INT(A)  THEN 5050
  238. 5100  ON A GOSUB 6000,2000,2600,2900,20000
  239. 5105  GOTO 5050
  240. 6000  REM  DEMO VALUES
  241. 6005 F1 = 0:F2 = 0:F3 = 0:F4 = 0
  242. 6006 S$ = "+ "
  243. 6010 MY = 2:MX = 3:B = 24:S = 100:MG = 2/3
  244. 6020  GOSUB 2900
  245. 6025  RETURN 
  246. 20000  END